locale.h এবং তার ব্যবহার
locale.h হেডার ফাইলটি সি প্রোগ্রামিং ভাষায় লোকেল (Locale) সেটিংস ম্যানেজমেন্টের জন্য ব্যবহৃত হয়। লোকেল হলো এমন একটি পদ্ধতি যা বিভিন্ন দেশের ভাষা, মুদ্রা, সময়, সংখ্যা বিন্যাস ইত্যাদি সঠিকভাবে প্রয়োগ করতে সাহায্য করে। লোকেল ব্যবহার করে প্রোগ্রামকে বিভিন্ন ভাষা ও সংস্কৃতির জন্য উপযোগী করা যায়।
লোকেল সেটিংসের মাধ্যমে প্রোগ্রামটি নির্ধারণ করতে পারে যে কীভাবে বিভিন্ন ভাষায় সংখ্যার বিন্যাস, মুদ্রার সিম্বল, ডেট এবং সময়ের ফরম্যাট, অথবা পাঠ্য পরিমাপ করা হবে।
locale.h এর ফাংশনসমূহ
locale.h এর কিছু গুরুত্বপূর্ণ ফাংশন এবং কনস্ট্যান্ট নিয়ে নিচে আলোচনা করা হলো।
১. setlocale() – লোকেল সেট করা
setlocale() ফাংশনটি ব্যবহার করে প্রোগ্রামে লোকেল সেট করা যায়। এটি প্রোগ্রামের জন্য নির্দিষ্ট ক্যাটেগরির লোকেল সেট করে, যেমন সংখ্যা বিন্যাস, মুদ্রা, তারিখ ইত্যাদি।
সিঙ্কট্যাক্স:
char *setlocale(int category, const char *locale);category: কোন ধরনের লোকেল সেট করতে হবে তা নির্ধারণ করে। কিছু সাধারণ ক্যাটেগরি হলো:LC_ALL: সব ক্যাটেগরির লোকেল সেট করে।LC_NUMERIC: সংখ্যা বিন্যাসের লোকেল সেট করে।LC_TIME: তারিখ এবং সময় বিন্যাসের লোকেল সেট করে।LC_MONETARY: মুদ্রা বিন্যাসের লোকেল সেট করে।LC_COLLATE: স্ট্রিং তুলনার লোকেল সেট করে।LC_CTYPE: ক্যারেক্টার ক্লাসিফিকেশন এবং কনভার্শনের লোকেল সেট করে।
locale: লোকেলের নাম (যেমন"en_US","fr_FR", ইত্যাদি)।"C"বা"POSIX"লোকেল মানে ডিফল্ট লোকেল। যদিNULLপাস করা হয়, তাহলে বর্তমান লোকেল নাম রিটার্ন হয়।
উদাহরণ:
#include <stdio.h>
#include <locale.h>
int main() {
// LC_ALL ক্যাটেগরির জন্য "en_US.UTF-8" লোকেল সেট করা
setlocale(LC_ALL, "en_US.UTF-8");
printf("Locale set to English (United States).\n");
// বর্তমান লোকেল সেটিংস দেখানো
printf("Current locale: %s\n", setlocale(LC_ALL, NULL));
return 0;
}২. localeconv() – লোকেল কনভেনশন পেতে
localeconv() ফাংশনটি মুদ্রা এবং সংখ্যা বিন্যাস সম্পর্কিত লোকেল কনভেনশন পেতে ব্যবহৃত হয়। এটি একটি struct lconv টাইপের পয়েন্টার রিটার্ন করে, যাতে মুদ্রা এবং সংখ্যা বিন্যাসের কনভেনশন সংরক্ষিত থাকে।
সিঙ্কট্যাক্স:
struct lconv *localeconv(void);struct lconv এর কিছু গুরুত্বপূর্ণ ফিল্ডসমূহ:
decimal_point: দশমিক বিন্দুর সিম্বল।thousands_sep: হাজার বিভাজকের সিম্বল।currency_symbol: মুদ্রার সিম্বল।mon_decimal_point: মুদ্রার দশমিক বিন্দু।mon_thousands_sep: মুদ্রার হাজার বিভাজক।
উদাহরণ:
#include <stdio.h>
#include <locale.h>
int main() {
setlocale(LC_ALL, "en_US.UTF-8"); // লোকেল সেট করা
struct lconv *lc = localeconv(); // লোকেল কনভেনশন পেতে
printf("Decimal point: %s\n", lc->decimal_point);
printf("Thousands separator: %s\n", lc->thousands_sep);
printf("Currency symbol: %s\n", lc->currency_symbol);
printf("Monetary decimal point: %s\n", lc->mon_decimal_point);
return 0;
}বিভিন্ন ক্যাটেগরি অনুযায়ী setlocale() এর ব্যবহার
setlocale() ফাংশনটি নির্দিষ্ট ক্যাটেগরি অনুযায়ী লোকেল সেট করতে পারে, যেমন:
LC_NUMERIC – সংখ্যা বিন্যাস পরিবর্তন
setlocale(LC_NUMERIC, "fr_FR.UTF-8"); // ফ্রেঞ্চ সংখ্যা বিন্যাসLC_TIME – সময় বিন্যাস পরিবর্তন
setlocale(LC_TIME, "de_DE.UTF-8"); // জার্মান সময় বিন্যাসLC_MONETARY – মুদ্রা বিন্যাস পরিবর্তন
setlocale(LC_MONETARY, "ja_JP.UTF-8"); // জাপানিজ মুদ্রা বিন্যাসLC_ALL – সব ক্যাটেগরি পরিবর্তন
setlocale(LC_ALL, "es_ES.UTF-8"); // স্প্যানিশ লোকেল
locale.h এর ব্যবহারিক গুরুত্ব
- বহুভাষাভিত্তিক প্রোগ্রাম তৈরি:
locale.hব্যবহার করে প্রোগ্রামটি বিভিন্ন ভাষা ও সংস্কৃতির জন্য উপযোগী করা যায়। - মুদ্রা, সময় এবং তারিখের বিন্যাস: লোকেল ব্যবহার করে মুদ্রা, সময় এবং তারিখের বিন্যাস স্থানীয় পদ্ধতিতে প্রদর্শন করা যায়।
- ডেটা ফরম্যাটিং উন্নত করা: বিভিন্ন অঞ্চলের লোকেল ব্যবহার করে ডেটা ফরম্যাটিং উন্নত করা যায়, যেমন হাজার বিভাজক এবং দশমিক বিন্দু স্থানীয় সিস্টেম অনুযায়ী পরিবর্তন করা।
সারসংক্ষেপ
| ফাংশন | কাজ |
|---|---|
setlocale() | নির্দিষ্ট ক্যাটেগরির জন্য লোকেল সেট করে |
localeconv() | লোকেল কনভেনশন পেতে ব্যবহৃত হয় |
locale.h হেডার ফাইলটি ব্যবহার করে প্রোগ্রামকে বিভিন্ন ভাষা ও সংস্কৃতির উপযোগী করা সহজ হয়। এর মাধ্যমে প্রোগ্রামটি ব্যবহারকারীর স্থানীয় সেটিংস অনুযায়ী ডেটা প্রদর্শন করতে পারে।
Read more